package com.itheima.chap02;

public class VerifyDemo {
    public static void main(String[] args) {
        testEqual("A1b2c3");
        testEqual("a1b2c3");

        testIsEmpety("");
        testIsEmpety(null);

        testContains("喔草，你NB");
        testContains("我靠，你NB");

        testEndwith("abc.jpg");
        testEndwith("abc.txt");

        testStartwith("https://www.baidu.com");

        testMatches("12888888888");
        testMatches("13888888888");

        testMatches2("1815043735@qq.com");
    }

    // 一.检验验证码是否正确（equals/equalsIgnoreCase）
    public static void testEqual(String verifyCode) {
        final String code = "A1b2c3";
        if (code.equalsIgnoreCase(verifyCode)) {
            System.out.println("验证码正确");
        } else {
            System.out.println("验证码错误");
        }
    }
    // 一般将常量放在前面，可能为null的对象放在后面，避免产生空指针风险
    // 如果比较的两个对象都可能为null，可以用java标准库中的工具类Objects来进行equals比较
    // eg：(main方法里面)
    /*
    Sring s1 = null;
    Sring s2 = new String("螃蟹");

    System.out.println("螃蟹".equals(s1));        // 正常运行
    System.out.println(Objects.equals(s1, s2));  // 正常运行
    System.out.println(s1.equals(s2));           // 空指针异常
    */

    // 二.校验用户名不为空（isEmpety/isBlankisBlank）,其中，isEmpety方法判断字符串是否为空仍有为null的风险，要么加上该点的判断.
    public static void testIsEmpety(String username) {
//        if(username == null || username.isEmpty()){
        if(username == null || username.isBlank()){
            System.out.println("用户名不能为空");
        } else {
            System.out.println("用户名正确...");
        }
    }
    // isEmpety和isEmpety的区别：
    // 1. isEmpty() 方法
    //功能：
    //只检查字符串的长度是否为 0
    //只有当字符串完全为空（长度为 0）时才返回 true（不忽略空白字符）
    //适用于所有的Java版本
    // 例如：String str1 = "";           // 空字符串
    //2. isBlank() 方法
    //功能
    //检查字符串是否为空或者只包含空白字符
    //会忽略空格、制表符、换行符等所有的空白字符
    //是Java 11 中引入的新方法
    // 例如：String str1 = "";           // 空字符串
    //String str2 = "   ";        // 只包含空格
    //String str3 = "\t\n  \r";   // 包含各种空白字符


    // 三.校验是否有敏感词，比如“喔草”（cotain）
    public static void testContains(String content) {
        if(content.contains("喔草")){
            System.out.println("包含敏感词");
        } else {
            System.out.println("不包含敏感词");
        }
    }

    // 四.检验文件是否有照片（endwith）
    public static void testEndwith(String fileName) {
        if(fileName.endsWith(".jpg") || fileName.endsWith(".png")){
            System.out.println("是图片");
        } else {
            System.out.println("不是图片");
        }
    }

    // 五.检验网址是否是安全网址，也就是以https://开头（startWith）
    public static void testStartwith(String url) {
        if(url.startsWith("https://")){
            System.out.println("是安全网址");
        } else {
            System.out.println("不是安全网址");
        }
    }

    // 六.检验手机号是否合法（matches） 在正则表达式中，\d表示数字，但在java中，\\d表示数字。"\"的本身为\\\\
    public static void testMatches(String phone) {
        if(phone != null && phone.matches("1[3-9]\\d{9}")){
            System.out.println("手机号合法");
        } else {
            System.out.println("手机号不合法");
        }
    }
    // 作业.检验QQ邮箱是否合法
    public static void testMatches2(String qqYouXiang) {
        if (qqYouXiang != null && qqYouXiang.matches("[1-9]\\d{4,10}@qq.com")){
            System.out.println("QQ邮箱合法");
        }
        else {
            System.out.println("QQ邮箱不合法");
        }
    }
}


